/**
 * @file utilities.c
 * @brief Utilità dell'applicativo.
 *
 * Vengono definiti in questo sorgente le funzioni e i tipi di dati necessari per il resto dell'applicativo
 * in particolare sono stati definiti:
 * - Strutture e funzionalità per gestire degli array dinamici @see DynArray
 * - Strutture e funzionalità per gestire l'astrazione dei dati @see HiddenType
 * - Funzionalità per gestire le operazioni con le stringhe.
 *
 * @date Feb 27, 2012
 * @author: Francesco Corvino
 */
#include "utilities.h"

int getFirstWord(const char *sourceStr,char *destStr, char* separatorC){
	char *dp, *token;
	if((dp = strdup(sourceStr))==NULL) return -1;
	token =	strsep(&dp,separatorC);
	strcpy(destStr, token);
	//free(dp);
	return 0;
}

/** \brief permette di ottenere una stringa concatenata.
 *
 */
char *getMultipleStrCat (char *String1, ...) {
	va_list List;
	va_start (List, String1);
	unsigned int sizestr;
	sizestr = strlen (String1) + 1;
	char *s = String1;
	do {
		sizestr += strlen (s) + 1;
	} while ((s = va_arg (List, char*)) != NULL);
	char *merge = (char*)malloc (sizeof (char) * sizestr + 1);
	char *sMerge = merge;
	va_end (List);
	va_start (List, String1);
	s = String1;
	do {
		strcpy (merge, s);
		merge += strlen (s);
	} while ((s = va_arg (List, char*)) != NULL);
	va_end (List);
	return sMerge;
}
